Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

I²C
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwawI²C (abbreviazione di mwbaInter Integrated Circuit), (pronuncia mwbqi-quadro-ci o mwbgi-due-ci), è un sistema di mwbwcomunicazione seriale bifilare utilizzato tra mwcacircuiti integrati.

Il classico mwcgbus I²C è composto da almeno un mwcwmaster ed uno mwdaslave (letteralmente "capo, padrone" e "sottoposto, schiavo").
La situazione più frequente vede un singolo mwdgmaster e più mwdwslave; possono tuttavia essere usate architetture mweamultimaster e mweqmultislave in mwegsistemi più complessi.

Il bus è stato sviluppato dalla mwfaPhilipscite-ref-1[1] nel mwgq1982 e dopo la realizzazione di centinaia di componenti e sistemi negli anni '80, nel mwgg1992 è stata prodotta la prima versione del mwgwprotocollocite-ref-2[2] che ha subìto diversi aggiornamenti ed ha generato bus simili, tra i quali mwiaSMBUS di mwiqbrevetto mwigIntel.
Di fatto i due mwjastandard si assomigliano in molti aspetti quali l'mwjqarbitraggio del bus (cioè la scelta nel caso di più possibili mwjgmaster di quale dispositivo debba assumere questa funzione di controllo del bus), l'alta mwjwimpedenza (mwka3state) in condizione di rilascio bus, il sistema di indirizzamento ed il protocollo mwkqACK/mwkgNACK (vi sono però differenze da tenere presenticite-ref-3[3]).

Contents

Uso
Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Uso

Trattandosi di un protocollo seriale i vantaggi che offre sono quelli di impegnare solo due linee (e quindi due pin dei dispositivi che lo usano).
Un suo limite è la velocità di comunicazione. Lo Standard iniziale è stato comunque aggiornato sotto questo aspetto.
Il protocollo di comunicazione può essere usato liberamente dal 1º ottobre mwna2006. Numerosi costruttori di circuiti integrati possono implementarlo (su mwnqschede madri, mwngmicrocontrollori ed altri integrati dotati di questo sistema di comunicazione: mwnwmemorie mwoaflash, mwoqEEPROM, driver di mwogdisplay, mwowRTC, ecc.) ma, avendo ogni tipo di periferica un proprio codice fisso di riferimento, la registrazione di un nuovo codice richiede il pagamento di un diritto alla Philipscite-ref-4[4].

Secondo la Philips i circuiti integrati che comunicano con questo protocollo sono più di 1000 di oltre 50 costruttori diversi.

Dettagli

Il protocollo mwtqhardware dell'Imwtg2C richiede due linee seriali di comunicazione:

• SDA (mwuqmwugSerial mwuwDAta) per i dati
• SCL (mwvqmwvgSerial mwvwCLock) per il mwwaclock (per la presenza di questo segnale l'Imwwq2C è un bus sincrono)

Va aggiunta una connessione di riferimento detta, talvolta impropriamente, GND (non visualizzata in figura) e una linea di alimentazione Vmwwwdd a cui sono connessi i resistori di mwxapull-upcite-ref-5[5] (Rmwyqp) che può anche non essere condivisa da tutti i dispositivi (le tensioni tipiche usate sono +5 mwygV o +3,3 V anche se sono ammesse tensioni più basse o più alte). Esistono esempi di architetture più completecite-ref-6[6].

Temporizzazione dei segnali

L'Imwcq2C ha 7 bit di indirizzo (B1 è il mwcgbit più significativo, B7 il mwcwmeno significativo) e quindi 128 possibili indirizzi diversi (detti nodi). Di questi però 16 sono riservati, quindi i dispositivi che possono essere collegati sullo stesso bus sono al massimo 112. Le velocità di trasmissione nel modo standard sono di 100 mwdakbit/s e 10 kbit/s (velocità del mwdqlow-speed mode) ma nulla impedisce di scendere a velocità più basse.
Revisioni del Imwdw2C hanno introdotto dispositivi con velocità di 400 kbit/s (detto mweafast mode) e 3,4 mweqMbit/s (detto mwegHigh Speed mode). Anche le possibilità di indirizzamento di dispositivi sono state ampliate a 10 bit.
Il massimo numero di nodi oltre ad essere limitato dal numero di indirizzi possibili diversi è limitato dalle mwfamwfqcapacità parassite introdotte da ciascun dispositivo. La capacità totale presentata da SDA e da SCL deve essere limitata a 400 mwfgpF (i resistori di pull-up dovranno essere dimensionati su questo dato, cioè la massima capacità dovuta alla somma dei dispositivi connessi, oltre al limite della corrente che ogni dispositivo può assorbire al livello logico basso).

Dettagli sui dispositivi

Come accennato in precedenza l'i2c è un bus con un clock (SCL) e una linea dati (SDA) e 7 bit possibili di indirizzamento.

Un bus ha due tipi di nodi:

• nodo mwhamaster – il dispositivo che emette il segnale di clock
• nodo mwhgslave – il nodo che si sincronizza sul segnale di clock senza poterlo controllare

Nel bus possono essere presenti più dispositivi che possono svolgere la funzione mwiamaster ma solo uno alla volta può svolgere questa funzione (altrimenti non può avere luogo una corretta comunicazione).

In fase di progetto (nello sviluppo del mwigsoftware/mwiwfirmware) si può decidere:

• di avere sempre lo stesso mwjgmaster
• di scegliere, ad ogni comunicazione tra circuiti integrati, quale tra i possibili mwkamaster deve svolgere questa funzione (mediante una procedura detta mwkqarbitraggio)

In generale ci sono 4 distinti modi di operare:

• un mwlqmaster trasmette – controlla il clock e invia dati agli mwlgslave
• un mwmamaster riceve - controlla il clock ma riceve dati dallo mwmqslave
• lo mwmwslave trasmette – il dispositivo non controlla il clock ma invia dati al mwnamaster
• lo mwngslave riceve – il dispositivo non controlla il clock e riceve dati dal mwnwmaster.

Il mwoqmaster inizia lo scambio di informazioni inviando lo start bit (S) seguito dall'indirizzo dello mwogslave con cui vuole comunicare (B1, ..., B7). Segue un bit (B8) che indica se vuole trasferire informazioni allo mwowslave (scrivere, ammesso che il dispositivo permetta questa possibilità) o ricevere informazioni (leggere). Nel primo caso il bit B8 tenuto basso dal mwpamaster nel caso voglia ricevere informazioni rilascerà la linea dati (alto per la presenza del pull-up).

Se lo mwpgslave indirizzato (B1, ..., B7) esiste prende il controllo della linea dati sul successivo impulso alto del SCL e la forza bassa (ACK). Il mwpwmaster sa quindi che il dispositivo selezionato ha ricevuto la richiesta ed è in attesa di rispondere. Gli indirizzi e i dati per convenzione del bus sono trasmessi iniziando dal bit più significativo (B1) e terminando con il bit meno significativo. Lo start e lo stop seguono le indicazioni della figura:

• lo start (S) è costituito da una transizione da alto a basso del bus dati SDA mentre il clock (SCL) è alto
• lo stop (P) è rappresentato da una transizione da basso ad alto del SDA mentre il SCL è alto.

Se il mwramaster vuole ricevere informazioni da uno mwrqslave, invia un ACK ad ogni byte ricevuto escluso l'ultimo byte. Dopo questo può inviare uno STOP bit (P) o uno START bit (S) se vuole mantenere il controllo del bus per un altro trasferimento.

Livello fisico

A livello hardware, come detto, le linee SCL e SDA sono mwugopen-drain o open-collector a seconda della tecnologia usata (rispettivamente mwvqMOSFET o mwvgBJT).
È quindi indispensabile la presenza di un resistore di pull-up. Quando un dispositivo attiva la sua uscita forza bassa la linea portandola a livello logico zero, lasciandola libera viene portata alta dal resistore di pull-up ed è considerata a livello logico alto (Vdd).
Questo comporta il vantaggio di non avere in nessun caso conflitti hardware (nessun dispositivo può forzare il livello logico alto).

Va anche detto che, per migliorare la lettura in presenza di disturbi è spesso presente sugli ingressi dei dispositivi un'mwwgisteresi.

Il bus è detto a due fili intendendo che la comunicazione necessita di due linee di comunicazione. In realtà è comunque indispensabile avere un filo di riferimento comune (chiamato GND o Vmwxass) per cui in pratica il numero minimo di connessioni fisiche è tre.
Per quanto riguarda la connessione positiva di alimentazione (indicata come Vmwxgdd, Vmwxwdd1, Vmwyadd2, ecc., Vmwyqcc o simili; di solito +5 V o +3,3 V) non è indispensabile che sia comune a tutti i componenti connessi (anche se nella maggior parte delle applicazioni lo è).
Esiste anche la possibilità di usare tensioni di alimentazione diverse per i dispositivi connessi al bus. In questo caso se tutti i dispositivi sono "tolleranti" rispetto alla tensione di alimentazione disponibile possono essere collegati direttamente al bus; altrimenti si dovranno inserire dei circuiti integrati adattatori (disponibili in commercio) tra i nodi che hanno tensioni di alimentazione diverse.

Applicazioni

L'I²C è usato per comunicare con dispositivi in cui semplicità e basso costo sono prioritari rispetto alla velocità di trasmissione. Applicazioni comuni sono:

• Accesso a mwzwMemoria flash ed mw0aEEPROM che mantengono i dati memorizzati anche quando non sono alimentate
• Accesso a mw0gDAC a bassa velocità
• Accesso a mw1aADC a bassa velocità
• Cambiamento del settaggio nei mw1gmonitor
• Cambiamento del volume in mw2aaltoparlanti intelligenti
• Controllo di mw2gdisplay come nei mw2wtelefoni cellulari
• Lettura e diagnostica di mw3qsensori come, ad esempio, sensori di mw3gtemperatura o mw3wvelocità di mw4aventilatori
• Lettura e regolazione di mw4gRTC (integrati orologio)
• Attivazione e spegnimento dell'alimentazione di componenti di un sistema elettronico

Anche se in numerosi microcontrollori è presente una sezione che gestisce direttamente questo protocollo di comunicazione e l'hardware dedicato (spesso indicato nei mw5qdatasheet genericamente come mw5gTwo-wire Serial Interface), è possibile implementarlo direttamente usando due generici pin di I/O e un mw5wsoftware/mw6afirmware abbastanza semplice (in inglese questo metodo è chiamato mw6qbit-banging).
Sistemi di comunicazione seriale come l'Imw6w2C si sono diffusi quando, per contenere i costi, si sono adottati dispositivi con contenitori (mw7apackage) ridotti e con numero di pin limitato. Un contenitore piccolo in genere pesa di meno ed ha bisogno di minor potenza, cosa importante specialmente nei telefoni e mw7qcomputer portatili.

Note

cite-note-11. mw9a(mw9qmw9gEN) mw9wmw-aVedi logo dell'I²C sul documento ufficiale della Philips, su mw-qnxp.com mw-g(archiviato dall'mw-wurl originale il 29 settembre 2011).
cite-note-22. mw-w(mwaqamwaqeEN) mwaqimwaqmPrima versione del protocollo e sue revisioni (mwaqqmwaquPDF), su mwaqystandardics.nxp.com mwaqc(archiviato dall'mwaqgurl originale il 16 maggio 2008).
cite-note-33. mwaqw(mwaq0mwaq4ENmwaq8) mwaraSul documento ufficiale Philips le differenze tra mwareSMBus e mwariI²C mwarmArchiviatomwarq il 16 maggio 2008 in mwaruInternet Archivemwary.. In particolare la frequenza minima di clock (0 mwargHz per I²C; 10 mwarkkHz per l'SMBus) e le differenze sulle soglie dei livelli logici.
cite-note-44. mwar0(mwar4mwar8EN) mwasamwaseRegistrazione di un nuovo codice, su mwasinxp.com mwasm(archiviato dall'mwasqurl originale il 20 marzo 2008).
cite-note-55. Per il calcolo dei resistori Rp vedi, ad esempio: mwasg(mwaskmwasoEN) mwassmwaswImwas02C-bus specification and user manual (mwas4mwas8PDF), su mwatanxp.com, NXP, 9 ottobre 2012, p.mwate 55. mwatiURL consultato il 3 luglio 2013 mwatm(mwatqarchiviato l'11 maggio 2013).
cite-note-66. mwatk(mwatomwatsEN) mwatwmwat0Esempio di una architettura più completa di Imwat42C sul sito Philips, su mwat8nxp.com mwaua(archiviato dall'mwaueurl originale il 19 marzo 2008).
cite-note-71. I resistori aggiunti Rmwauus hanno le funzioni di: mwaucmwaugproteggere i dispositivi indicati in figura come 1 e 2 da mwaukdisturbi (chiamati mwauospikes) di alta tensione indotti sulle linee SDA e SCL che potrebbero danneggiarli mwausnelle applicazioni standard e soprattutto in modo fast (cioè di trasmissione dati a frequenze elevate) adattare l'mwauwimpedenza dei dispositivi collegati al bus

Voci correlate
Altri progetti

Altri progetti

• Wikimedia Commons

• Wikimedia Commons contiene immagini o altri file su I²C

Collegamenti esterni

• mwavk(EN) Le specifiche I²C, Versione 6, aprile 2014, sul sito NXP (Philips) (PDF), su nxp.com. URL consultato il 3 luglio 2013 (archiviato dall'url originale l'11 maggio 2013).
• mwavs(EN) Descrizione dettagliata del protocollo, su i2c-bus.org.
• mwav0(EN) mwav4Il bus I²C in Linux (esempio pratico di possibile gestione software di master e slave I²C)
• mwawa(EN) Dispositivi I²C sul sito Philips, su standardics.nxp.com. URL consultato il 23 marzo 2008 (archiviato dall'url originale il 12 marzo 2008).
• mwawi(EN) https://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1999&ty=&dty=&section=&NextRow=&ssUserText=I2C
• mwawg(EN) Dispositivi I²C sul sito Atmel, su atmel.com.